package com.leetCode.problem;

/**
 * Description:
 * Copyright:   Copyright (c)2019
 * Company:     zefu
 *
 * @author: 张李鑫
 * @version: 1.0
 * Create at:   2021-11-05 10:53:25
 * <p>
 * Modification History:
 * Date         Author      Version     Description
 * ------------------------------------------------------------------
 * 2021-11-05     张李鑫                     1.0         1.0 Version
 */
public class Problem29 {
    /**
     * 给定两个整数，被除数dividend和除数divisor。将两数相除，要求不使用乘法、除法和 mod 运算符。
     *
     * 返回被除数dividend除以除数divisor得到的商。
     *
     * 整数除法的结果应当截去（truncate）其小数部分，例如：truncate(8.345) = 8 以及 truncate(-2.7335) = -2
     * 刷题班 四
     */


    /**
     * 获得两个数字的进位信息   0 1 1 1  7
     *                   &  0 1 0 1  5
     *                      0 1 0 1  <<1
     *                      1 0 1 0  进位信息
     *
     *
     *
     *
     * @param dividend
     * @param divisor
     * @return
     */
    public int divide(int dividend, int divisor) {
        return 0;
    }

    /**
     * 两数相加
     * @param a
     * @param b
     * @return
     */
    public static int add(int a,int b){
        int sum=a;
        while (b!=0){
            sum =a^b;
            b=(a&b)<<1;
            a=sum;
        }
        return sum;
    }
    /**
     * 减法
     * @param a
     * @param b
     * @return
     */
    public static int del(int a,int b){
        return add(a,negNum(b));
    }
    /**
     * 取反+1
     * @param b
     * @return
     */
    private static int negNum(int b) {
        return add(~b,1);
    }


}
